package br.com.tcf.entidades;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity
public class Estado implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	private String id_uf;
	@Column
	private int id_ibge_uf;
	@Column(unique=true)
	private String nm_estado;
	@Column(unique=true)
	private Integer id_estado;
	
	@OneToMany(mappedBy="estado", cascade=javax.persistence.CascadeType.ALL)
	private List<Cidade> cidades = new ArrayList<Cidade>();
	
	//GETTERS AND SETTERS
	public String getId_uf() {
		return id_uf;
	}
	public void setId_uf(String id_uf) {
		this.id_uf = id_uf;
	}
	public int getId_uf_ibge() {
		return id_ibge_uf;
	}
	public void setId_uf_ibge(int id_uf_ibge) {
		this.id_ibge_uf = id_uf_ibge;
	}
	public String getNm_estado() {
		return nm_estado;
	}
	public void setNm_estado(String nm_estado) {
		this.nm_estado = nm_estado;
	}
	public Integer getId_estado() {
		return id_estado;
	}
	public void setId_estado(Integer id_estado) {
		this.id_estado = id_estado;
	}
	public int getId_ibge_uf() {
		return id_ibge_uf;
	}
	public void setId_ibge_uf(int id_ibge_uf) {
		this.id_ibge_uf = id_ibge_uf;
	}
	public List<Cidade> getCidades() {
		return cidades;
	}
	public void setCidades(List<Cidade> cidades) {
		this.cidades = cidades;
	}
	
	@Override
	public String toString() {
		return this.nm_estado;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id_uf == null) ? 0 : id_uf.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (!(obj instanceof Estado)) {
			return false;
		}
		Estado other = (Estado) obj;
		if (id_uf == null) {
			if (other.id_uf != null) {
				return false;
			}
		} else if (!id_uf.equals(other.id_uf)) {
			return false;
		}
		return true;
	}
}
